[アップデート] AWS CodeBuild の ARM コンテナで新しいコンピュートタイプが選択出来るようになりました

[アップデート] AWS CodeBuild の ARM コンテナで新しいコンピュートタイプが選択出来るようになりました

Clock Icon2024.08.06

いわさです。

AWS CodeBuild のビルドコンピューティング環境は複数の環境から選択することが出来ます。
その際にオペレーティングシステムや CPU アーキテクチャーの他にコンピューティングリソースの性能を選択することが出来るのですが、これまでは ARM 環境の場合は x86 と比べてかなり限られたスペックのコンピュートタイプしか選択することが出来ませんでした。

これが先日のアップデートで新たに 3 つのコンピュートタイプが追加され、x86 と遜色のない性能まで選択することが出来るようになりました。

https://aws.amazon.com/about-aws/whats-new/2024/08/aws-codebuild-three-arm-based-compute-types/

マネジメントコンソールでの選択

アップデートの確認が出来る箇所ですが、前提として CodeBuild プロジェクトの「環境」でイメージに AArch64(ARM Architecture 64-bit)を選択します。

931E49A3-9FCD-498A-86B6-23EBF283B50C.png

そうすると同じ環境構成内の「コンピューティング」でコンピュートタイプが選択出来るのですが、今回のアップデートでは次の赤枠の3つが追加されました。

E4D6BDBE-4D3C-4F9E-9838-E1ED1F63BB69.png

後ほど API でも確認しますが、コンピュートタイプの名称としては次のようになっていて、従来のタイプの間を埋める Medium と、より大きなサイズである XLarge / 2XLarge が選択可能になりました。

コンピュートタイプ メモリ(GB) vCPU
Small 4 2
Medium 8 4
Large 16 8
XLarge 64 32
2XLarge 96 48

x86 は従来と変わらずで次の 5 つが選択出来るようになっています。

0E7A603E-0F5D-4DC9-AAD8-E53F27130C66.png

x86 についても上から Small / Medium / Large / XLarge / 2XLarge です。
ちなみにメモリや vCPU 数は同じコンピュートタイプでも ARM と x86 で数値が少し異なっています。

AWS CLI で指定する

当然ながら AWS API でも対応されていますので指定が可能です。
AWS 公式ドキュメントでは ARM Small、Linux Small のような記載の分け方がされていますが、API パラメータの実体としては同じ「BUILD_GENERAL1_SMALL」になる(GPU や Windows も含めて)のでそこだけ知っておきましょう。Environment Type (ARM Container など)によって割り当てられるメモリなどは少し変わる感じになります。

CreateProject API のパラメータで指定します。

https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html

% cat hoge.json
{
    "name": "hoge0806build",
    "serviceRole": "arn:aws:iam::123456789012:role/service-role/codebuild-hoge0806consolebuild-service-role",
    "source": {
        "type": "NO_SOURCE",
        "buildspec": "version: 0.2 \r\nphases:\r\n  build:\r\n    commands:\r\n       - echo 'Hello world'\r\n"
    },
    "artifacts": {
        "type": "NO_ARTIFACTS"
    },
    "environment": {
        "type": "ARM_CONTAINER",
        "image": "aws/codebuild/amazonlinux2-aarch64-standard:3.0",
        "computeType": "BUILD_GENERAL1_MEDIUM"
    }
}
% aws-v1 codebuild create-project --cli-input-json file://hoge.json
{
    "project": {
        "name": "hoge0806build",
        "arn": "arn:aws:codebuild:ap-northeast-1:123456789012:project/hoge0806build",
        "source": {
            "type": "NO_SOURCE",
            "buildspec": "version: 0.2 \r\nphases:\r\n  build:\r\n    commands:\r\n       - echo 'Hello world'\r\n",
            "insecureSsl": false
        },
        "artifacts": {
            "type": "NO_ARTIFACTS"
        },
        "cache": {
            "type": "NO_CACHE"
        },
        "environment": {
            "type": "ARM_CONTAINER",
            "image": "aws/codebuild/amazonlinux2-aarch64-standard:3.0",
            "computeType": "BUILD_GENERAL1_MEDIUM",
            "environmentVariables": [],
            "privilegedMode": false,
            "imagePullCredentialsType": "CODEBUILD"
        },
        "serviceRole": "arn:aws:iam::123456789012:role/service-role/codebuild-hoge0806consolebuild-service-role",
        "timeoutInMinutes": 60,
        "queuedTimeoutInMinutes": 480,
        "encryptionKey": "arn:aws:kms:ap-northeast-1:123456789012:alias/aws/s3",
        "created": 1722900009.722,
        "lastModified": 1722900009.722,
        "badge": {
            "badgeEnabled": false
        },
        "projectVisibility": "PRIVATE"
    }
}

API ドキュメントや AWS CLI のリファレンス上では 7GB / 4 vCPU と記載されていますが ARM コンテナを指定した場合は期待どおり ARM コンピュートタイプのスペックで動作しています。

9A047DEB-4129-445A-A698-7BAC3F8885BD.png

さいごに

本日は AWS CodeBuild の ARM コンテナで新しいコンピュートタイプが追加されたので少し触ってみました。

特に、コスト最適化などでビルド環境を ARM に移行するケースはたまに見ますが、移行したけどもスペック不足に悩んでいた方には嬉しいアップデートではないでしょうか。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.